/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package oilCharge;

/**
 *
 * @author houfukude
 */
//编译环境：MyEclipse
import java.io.BufferedReader;
import java.io.InputStreamReader;


public class oilCharge {

	public static int input(){//输入数字字符

		BufferedReader  bf= new  BufferedReader(new  InputStreamReader(System.in));//输入数据

		try{

            return Integer.parseInt(bf.readLine());//将数据转换为整型
	    }catch(Exception e){ //捕捉异常，并进行异常处理

		    System.out.print("输入错误，请重新输入: ");//输入错误，需要重新输入
            return input();
	    }
	}

	public static void solve(int n, int A[], int S){//执行算法
		int  s;//剩余最大路程
		int  count = 0;//加油次数
		boolean  flag = false ;//标记是否可以通过第（i+1）个加油站

		s = S;
		System.out.println("到达香格里拉的路程中需要加油的情况如下：");
		for( int i = 0; i < n-1; i ++){
			if( s >= A[i]){
				s = s - A[i];
				flag = true;
			}
			else{
				s = S;
				flag = false;
			}
			if( !flag ){
				System.out.println("需要在第" + (i+1) + "个加油站加油！");
				count ++;
				i --;
			}
		}
		if( count == 0 ){
			System.out.println("不需要加油就可到达香格里拉！");
		}
		else{
			System.out.println("\n总共需要加油" + count + "次才可以到达香格里拉！");
		}
	}

	public static void main(String[] args) {
	     int  num;//操作方式
		 int  n = 0;//加油站总数
	     int  S = 0;//油箱满时可行驶的最大路程
	     int  A[];//用于保存相邻两个加油站间的距离

	     do {
             System.out.print("请输入油箱满时可行驶的最大路程（单位：公里）: ");
             S = input();
             System.out.print("请输入加油站总数: ");
             n = input();
             A = new  int[n-1];
             System.out.println("正在随机生成距离");
             //System.out.println("(1)随机产生相邻两个加油站间距离  (2)自行输入相邻两个加油站间距离  (0)退出系统\n");
	         do{
	        	 //System.out.print("请选择操作方式(输入操作数0~2): ");
			 //    num = input();

                     num=1;
	         }while( num < 0 || num > 2 );
	         System.out.println();

		     if( num == 1){
		    	 System.out.println("相邻两个加油站间的距离如下（单位：公里）");
	             for( int i = 0; i < n-1; i ++){
	            	 System.out.print("第" + (i+1) + "个加油站和第" + (i+2) + "个加油站间的距离为：");
	                 do{
	                	 A[i] =(int) (Math.random() * 100 + 1);
	                 }while( A[i] > S );
	                 System.out.print(A[i]+"\n");
	             }
	             System.out.println();

	             solve( n, A, S );
                     System.exit(0); 
	         }
	         if( num == 2){
	             System.out.println("请依次输入相邻两个加油站间的距离（单位：公里）");
	             for( int i = 0; i < n-1; i ++){
	            	 do{
	            		 System.out.print("第" + (i+1) + "个加油站和第" + (i+2) + "个加油站间的距离为：");
		            	 A[i] = input();
	            	 }while( A[i]==0 || A[i]>S );
	             }
	             System.out.println();

	             solve( n, A, S );
	         }
	         if( num == 0){
	        	 System.out.println("退出成功！");
	             System.exit(0); 
	         }
	      }while( num != 0);
	}

}


